// Licensed to Elasticsearch B.V. under one or more contributor
// license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright
// ownership. Elasticsearch B.V. licenses this file to you under
// the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

package agentcfg

import (
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestSanitize(t *testing.T) {
	input := Result{Source: Source{
		Agent:    "python",
		Settings: Settings{"transaction_sample_rate": "0.1", "capture_body": "false"}}}
	// full result as not requested for an insecure agent
	res := sanitize([]string{}, input)
	assert.Equal(t, input, res)

	// no result for insecure agent
	res = sanitize([]string{"rum-js"}, input)
	assert.Equal(t, zeroResult(), res)

	// limited result for insecure agent
	insecureAgents := []string{"rum-js"}
	input.Source.Agent = "rum-js"
	assert.Equal(t, Settings{"transaction_sample_rate": "0.1"}, sanitize(insecureAgents, input).Source.Settings)

	// limited result for insecure agent prefix
	insecureAgents = []string{"Jaeger"}
	input.Source.Agent = "Jaeger/Python"
	assert.Equal(t, Settings{"transaction_sample_rate": "0.1"}, sanitize(insecureAgents, input).Source.Settings)

	// no result for insecure agent prefix
	insecureAgents = []string{"Python"}
	input.Source.Agent = "Jaeger/Python"
	res = sanitize(insecureAgents, input)
	assert.Equal(t, zeroResult(), res)
}
